package com.zenithmind.mall.service;

import com.zenithmind.mall.pojo.dto.ProductDTO;

import java.util.List;

/**
 * 商品管理服务接口 - 遵循接口隔离原则，专门负责商品的管理操作
 * 
 * @author ZenithMind Team
 * @since 2025-07-03
 */
public interface ProductManagementService {

    /**
     * 创建商品
     * 
     * @param productDTO 商品信息
     * @return 商品ID
     */
    String createProduct(ProductDTO productDTO);

    /**
     * 更新商品
     * 
     * @param id 商品ID
     * @param productDTO 商品信息
     * @return 更新结果
     */
    Boolean updateProduct(String id, ProductDTO productDTO);

    /**
     * 删除商品
     * 
     * @param id 商品ID
     * @return 删除结果
     */
    Boolean deleteProduct(String id);

    /**
     * 批量删除商品
     * 
     * @param ids 商品ID列表
     * @return 删除结果
     */
    Boolean deleteProducts(List<String> ids);

    /**
     * 上架商品
     * 
     * @param id 商品ID
     * @return 操作结果
     */
    Boolean onShelf(String id);

    /**
     * 下架商品
     *
     * @param id 商品ID
     * @return 操作结果
     */
    Boolean offShelf(String id);

    /**
     * 更新商品状态
     *
     * @param id 商品ID
     * @param status 状态
     * @return 操作结果
     */
    Boolean updateProductStatus(String id, String status);

    /**
     * 批量上架商品
     * 
     * @param ids 商品ID列表
     * @return 操作结果
     */
    Boolean batchOnShelf(List<String> ids);

    /**
     * 批量下架商品
     * 
     * @param ids 商品ID列表
     * @return 操作结果
     */
    Boolean batchOffShelf(List<String> ids);

    /**
     * 复制商品
     * 
     * @param id 原商品ID
     * @return 新商品ID
     */
    String copyProduct(String id);

    /**
     * 导入商品
     * 
     * @param productDTOs 商品信息列表
     * @return 导入结果
     */
    Boolean importProducts(List<ProductDTO> productDTOs);
}
